Device Details


Overview

Name | Version: Kasm Canvas 1.12.3
Author: kevleyski
Device Type: MIDI Effect
Description: Visualizers inside Ableton Live!

Compiled optimised Rust code rendering to HTML5 canvas 2D context via Max4Live jweb object through WebAssembly

Go edit your own neat visualisers, make some slick animated VST wrappers for Ableton Live
in Rust code here - make it do anything:
https://maxforlive.com/library/device/12909/kasm-rust-ableton-wasm-source-code

(there is a WebGPU version coming too but there were some fiddly bits still to deal with)

!! NOTE: you need the latest Ableton 12.2 for this as it uses the new V8 jsinterp from Max9 !!

But... if you don't have Max4Live or have an older Ableton Live version no worries - Kasm is WebAssembly so it also runs on a regular web browsers too! You can interface with Ableton via WebMIDI instead, this way you can develop and test with Kasm SDK in Chrome/Firefox, try it out here:
https://pyrmontbrewery.com/kasm


For those interested, this is what the code looks like (Ableton Live and Web version uses identical WebAssembly)...

fn init_canvas_2d(canvas: &HtmlCanvasElement) -> Result (), JsValue {
let context = canvas
.get_context("2d")?
.ok_or("Failed to get 2D context")?
.dyn_into::CanvasRenderingContext2d()?;

// Set initial background with a more visible color for testing
context.set_fill_style(&JsValue::from_str("#111"));
context.fill_rect(0.0, 0.0, 150.0, 150.0);

// Draw initial border to confirm canvas is working
context.set_stroke_style(&JsValue::from_str("#333"));
context.set_line_width(2.0);
context.stroke_rect(1.0, 1.0, 148.0, 148.0);

crate::post!("Canvas: 2D context initialized with polyphonic support");
Ok(())
}

pub fn update_webgpu_data(midi_data_1: i32, midi_data_2: i32, is_cc: bool) {
let prev_data_1 = *MIDI_DATA_1.lock().unwrap();
let prev_data_2 = *MIDI_DATA_2.lock().unwrap();
let prev_is_cc = *IS_CC_DATA.lock().unwrap();

// Update stored values
*MIDI_DATA_1.lock().unwrap() = midi_data_1;
*MIDI_DATA_2.lock().unwrap() = midi_data_2;
*IS_CC_DATA.lock().unwrap() = is_cc;




...

full source code is here https://maxforlive.com/library/device/12909/kasm-rust-ableton-wasm-source-code

Details

Live Version Used: 12.2
Max Version Used: 9.0
Date Added: Aug 06 2025 11:58:40
Date Last Updated: Aug 07 2025 06:13:10
Downloads: 28
License: None
Average Rating

Log in to rate this device

-n/a-

Files

Device File: Kasm Canvas.amxd
 


Login to comment on this device.

Browse the full library